<?php
// +----------------------------------------------------------------------
// | Name 风音框架
// +----------------------------------------------------------------------
// | Author 唐启云 <tqy@fxri.net>
// +----------------------------------------------------------------------
// | Copyright Copyright © 2016-2099 方弦研究所. All rights reserved.
// +----------------------------------------------------------------------
// | Link https://www.fxri.net
// +----------------------------------------------------------------------

namespace fxsafe\facade;

/**
 * 通信类
 */
class Socket
{
    /**
     * UDP通信
     * @param string $message 信息
     * @param string $ip IP地址
     * @param string $port 端口
     * @param string $type 类型
     * @return mixed
     */
    public function udpSend($message, $ip, $port, $type = 'point')
    {
        // 检查IP格式
        if (is_ipv4($ip)) {
            // 使用IPv4格式地址，数据报形式，UDP方式传输数据
            $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
        } else if (is_ipv6($ip)) {
            // 使用IPv6格式地址，数据报形式，UDP方式传输数据
            $socket = socket_create(AF_INET6, SOCK_DGRAM, SOL_UDP);
        } else {
            return false;
        }
        // 匹配类型
        $type = strtolower($type);
        switch ($type) {
            case 'point':
                // 点对点模式
                break;
            case 'bcst':
                // 广播模式
                socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, 1);
                break;
        }
        // 发送信息
        $message = str_split($message, 65507);
        foreach ($message as $value) {
            socket_sendto($socket, $value, strlen($value), 0, $ip, $port);
        }
        // 关闭连接
        socket_close($socket);
        return true;
    }
}
